package com.my12306.user.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.my12306.common.model.vo.PageVo;
import com.my12306.common.util.PageUtils;
import com.my12306.common.util.response.ResponseData;
import com.my12306.user.model.po.PUserEntity;
import com.my12306.user.model.vo.UserVo;

import java.awt.image.BufferedImage;
import java.util.List;

/**
 * 用户表
 *
 * @Author:苏牧夕
 * @Date:2020-05-15 17:36:13
 * @Version 1.0
 */
public interface PUserService extends IService<PUserEntity> {

    /**
     * 生成验证码
     *
     * @param uuid
     * @return
     */
    BufferedImage getCaptcha(String uuid);

    /**
     * 根据用户姓名查用户
     *
     * @param userNaem
     * @return
     */
    PUserEntity queryUserByUsername(String userNaem);

    /**
     * 根据id查用户
     *
     * @param id
     * @return
     */
    PUserEntity queryUserById(Long id);

    /**
     * 根据id修改用户
     *
     * @param userEntity
     * @return
     */
    Boolean updateUserById(PUserEntity userEntity);

    /**
     * 添加一个用户user
     *
     * @param user
     * @return
     */
    Long saveUser(PUserEntity user);

    /**
     * 注册用户
     *
     * @param userVo
     * @return
     */
    ResponseData saveUserVo(UserVo userVo);

    /**
     * 根据用户名查找用户
     *
     * @param userName
     * @return
     */
    PUserEntity getUserInfoByUsername(String userName);

    /**
     * 批量删除用户
     *
     * @param asList
     * @return
     */
    ResponseData deleteBatchByUserIds(List<Long> asList);

    /**
     * 修改密码
     *
     * @param userVo
     * @return
     */
    Boolean updateUserPasswordById(UserVo userVo);

    /**
     * 根据分页参数查询用户
     *
     * @param pageVo
     * @return
     */
    PageUtils queryUserListPage(PageVo pageVo);

    /**
     * 计算总数
     *
     * @param logicDelete
     * @param linkeName
     * @return
     */
    Integer querryUserCount(Integer logicDelete, String linkeName);

    /**
     * 用户注册
     * 1.密码加密
     * 2.用户保存
     * 3.添加权限规则
     * 4.初始化相关数据
     *
     * @param pUserEntity
     */
    Long registerUser(PUserEntity pUserEntity);

    /**
     * 根据手机号查询用户
     *
     * @param phone
     * @return
     */
    PUserEntity queryUserByPhone(String phone);

    /**
     * 判断手机号是否已经存在
     * @param mobile
     * @return
     */
    Boolean isMobile(String mobile);
}

